<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index15-Promise</title>
</head>
<body>
<script type="text/javascript" src="./jquery-3.5.1.js"></script>
  <script type="text/javascript">

      // // 创建Promise对象,参数是一个函数
      // // 回调函数的第一个参数是成功时执行函数
      // // 回调函数的第二个参数是失败时执行函数
      // let promise = new Promise((resolve, reject) => {
      //     console.log('promise初始化状态：pending');
      //     // 执行延迟函数，模拟请求的耗时
      //     setTimeout(() => {
      //         console.log('开启定时器，模拟异步操作');
      //         // resolve('异步返回，执行成功'); // pending--->filfulled
      //         reject('异步返回，执行失败'); // pending--->rejected
      //     }, 1000);
      // });
      // console.log('代码继续执行');
      // // 给promise绑定成功和失败回调函数
      // // then(参数一,参数二):参数一是成功时的回调函数,参数二是失败时的回调函数
      // promise.then(data => {
      //     console.log(data);
      // }, data => {
      //     console.log(data);
      // });

      // 发送四个异步请求：请求1成功后 ----》 请求2成功后 ----》请求3成功 -----》请求4
      // 策略模式可以解决下面的问题
      // if () {
      //     if () {
      //         if () {
      //
      //         } else {
      //
      //         }
      //     } else {
      //
      //     }
      // } else {
      //
      // }
      /*
        $.ajax({
            success(){
                // 请求1成功
                $.ajax({
                    success(){
                        // 请求2成功
                         $.ajax({
                            success(){
                                // 请求3成功
                                 $.ajax({
                                    success(){
                                        // 请求4
                                    }
                                });
                            }
                        });
                    }
                });
            }
        });
        回调地狱通过promise解决
       */
        // 将Promise和jquery.ajax一起使用
      let promise = new Promise((resolve, reject) => {
          console.log('promise初始化状态：pending');
          $.getJSON('./student.json', res => {
              if (res['ret'] == true) {
                  // 请求处理成功
                  console.log('处理成功');
                  resolve(res['data']);
              } else {
                  // 请求处理失败
                  console.log('处理失败');
                  reject('状态为rejected,处理失败');
              }
          });
      });
      console.log("代码继续执行")
      // 通过promise来设置成功和失败回调
      promise.then(data => {
          // console.log(data);
          // 如果是数组还可以使用console.table()输出，输出的结果像一张表格
          console.table(data['studentList']);
      }, data => {
          console.log(data);
      });
  </script>
</body>
</html>